﻿/*
 Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add("anchor",
function(c) {
    function e(b, a) {
        return b.createFakeElement(b.document.createElement("a", {
            attributes: a
        }), "cke_anchor", "anchor")
    }
    return {
        title: c.lang.link.anchor.title,
        minWidth: 300,
        minHeight: 60,
        onOk: function() {
            var b = CKEDITOR.tools.trim(this.getValueOf("info", "txtName")),
            a = {
                id: b,
                name: b,
                "data-cke-saved-name": b
            };
            this._.selectedElement ? this._.selectedElement.data("cke-realelement") ? (b = e(c, a), b.replace(this._.selectedElement), CKEDITOR.env.ie && c.getSelection().selectElement(b)) : this._.selectedElement.setAttributes(a) : (b = (b = c.getSelection()) && b.getRanges()[0], b.collapsed ? (a = e(c, a), b.insertNode(a)) : (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (a["class"] = "cke_anchor"), a = new CKEDITOR.style({
                element: "a",
                attributes: a
            }), a.type = CKEDITOR.STYLE_INLINE, a.applyToRange(b)))
        },
        onHide: function() {
            delete this._.selectedElement
        },
        onShow: function() {
            var b = c.getSelection(),
            a;
            a = b.getRanges()[0];
            var d = b.getSelectedElement();
            a.shrink(CKEDITOR.SHRINK_ELEMENT);
            a = (d = a.getEnclosedNode()) && d.type === CKEDITOR.NODE_ELEMENT && ("anchor" === d.data("cke-real-element-type") || d.is("a")) ? d: void 0;
            var f = (d = a && a.data("cke-realelement")) ? CKEDITOR.plugins.link.tryRestoreFakeAnchor(c, a) : CKEDITOR.plugins.link.getSelectedLink(c);
            if (f) {
                this._.selectedElement = f;
                var e = f.data("cke-saved-name");
                this.setValueOf("info", "txtName", e || ""); ! d && b.selectElement(f);
                a && (this._.selectedElement = a)
            }
            this.getContentElement("info", "txtName").focus()
        },
        contents: [{
            id: "info",
            label: c.lang.link.anchor.title,
            accessKey: "I",
            elements: [{
                type: "text",
                id: "txtName",
                label: c.lang.link.anchor.name,
                required: !0,
                validate: function() {
                    return this.getValue() ? !0 : (alert(c.lang.link.anchor.errorName), !1)
                }
            }]
        }]
    }
});